package com.example.demo.thread.join;

/**
 * 要实现串行执行，可以加上join方法，实现线程1执行完成后才开始执行线程2，也就是串行执行
 *
 * 从执行结果看，已经是串行执行线程
 *
 * 所以上面的例子是调了现场1的join方法，也就是说要先执行完成线程1，然后才执行main主线程
 *
 * join方法的作用是，举个例子，在A线程里调B线程的join方法时，要先B线程执行完成，然后才会继续执行A线程
 *
 * ok，上面调join方法是不加参数的，也可以加上参数，比如线程A.join(10)；，就是说线程A执行10s后，继续执行B线程
 *
 * 注意：join时间参数缺省的情况，默认是0，也就是说join()等同于join(0);
 *
 * @author luowj12
 * @since 2021/6/23 10:32
 */
public class ThreadJoinTest {
    //private static final Long count = 10000L;
    public static void main(String[] args){
        long base = System.currentTimeMillis();
        try {
            ThreadJoin1 t1 = new ThreadJoin1("线程1");
            ThreadJoin1 t2 = new ThreadJoin1("线程2");
            t1.start();
            t1.join();
            t2.start();

        } catch (Exception e) {
            e.printStackTrace();
        }
        long time = System.currentTimeMillis() - base;
        System.out.println("执行时间："+time);
    }

}
class ThreadJoin1 extends Thread{
    private static final Long count = 10L;

    public ThreadJoin1(String name){
        super(name);
    }

    @Override
    public void run() {
        //super.run();
        for(int i = 1; i <= count; i ++){
            System.out.println(this.getName()+":"+i);
        }
    }
}
